package com.turbo.cloud.core.mybatisplus;

import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @author zhangluning
 */
@Component
@ConditionalOnClass(DefaultSqlInjector.class)
public class MySqlInjector extends DefaultSqlInjector {

    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {

        List<AbstractMethod> methodList = super.getMethodList(mapperClass, tableInfo);
//        // 将自定义的类方法 加入到父类的集合中
//        methodList.add(new DeleteAllMethod());
//
//        // 【选装件】 插入的时候，不插入【逻辑删除】 和 【age年龄】
//        methodList.add(new InsertBatchSomeColumn(t -> !t.isLogicDelete() && !t.getColumn().equals("age")));

        // 【选装件】 逻辑删除的时候同时再修改值，但是修改值得字段上要加上注解 @TableField(fill = FieldFill.UPDATE)
//        methodList.add(new LogicDeleteByIdWithFill());

//        // 【选装件】 根据id更新固定的几个字段（但是不包括逻辑删除）  这里 不更新 name 字段
//        methodList.add(new AlwaysUpdateSomeColumnById(t -> !t.getColumn().equals("name")));

        return methodList;
    }
}
